/**
 * 笛卡尔积
 */
const cartesianProduct = (arr) => {
  //reduce实现
  return arr.reduce((acc, cur) => {
    return acc.map(item => {
      return cur.map(val => [...item, val])
    }).flat()
  }, [[]])
}
const arr = [[1,2],['a','b'],[true,false]]
// res = [[1, 'a', true], [1, 'a', false], [1, 'b', true], 
// [1, 'b', false], [2, 'a', true], [2, 'a', false], [2, 'b', true], [2, 'b', false]]
console.log(JSON.stringify(cartesianProduct(arr)))